import {
  login,
  logout,
  getInfo,
  getMenu
} from '@/api/user'
import {
  getToken,
  setToken,
  removeToken
} from '@/utils/auth'
import {
  resetRouter
} from '@/router'
import {
  VXETable
} from 'vxe-table'
import XEUtils from 'xe-utils'
const getDefaultState = () => {
  return {
    token: getToken(),
    org: window.localStorage.getItem('userInfo') ? window.localStorage.getItem('userInfo').split('&nbsp;&nbsp;')[0] :
      '',
    name: window.localStorage.getItem('userInfo') ? window.localStorage.getItem('userInfo').split('&nbsp;&nbsp;')[1] :
      '',
    avatar: '',
    menu: {},
    dict_role: {
      '2': '系统管理员',
      '3': '教练员',
      '4': '办公室',
      '5': '训练科',
      '6': '人事科',
      '7': '医务室',
      '8': '体科所',
      '9': '校领导',
      '10': '学生科',
      '11': '教务科',
      '12': '文化教师',
      '13': '团委',
      '0': '宿舍管理',
      '1': '保险管理',
      '-2': '枪支管理',
    },
    dict_school_year: {
      6: "2005年度",
      7: "2006年度",
      8: "2007年度",
      9: "2008年度",
      10: "2009年度",
      11: "2010年度",
      12: "2011年度",
      13: "2012年度",
      14: "2013年度",
      15: "2014年度",
      16: "2015年度",
      17: "2016年度",
      18: "2017年度",
      19: "2018年度",
      20: "2019年度",
      21: "2020年度",
      22: "2021年度",
      23: "2022年度",
      24: "2023年度",
      25: "2024年度",
      26: "2025年度",
      27: "2026年度",
      28: "2027年度",
      29: "2028年度",
      30: "2029年度",
      31: "2030年度",
    },
    dict_school_term: {
      1: "2015年度上学期",
      2: "2015年度下学期",
      3: "2016年度上学期",
      4: "2016年度下学期",
      5: "2017年度上学期",
      6: "2017年度下学期",
      7: "2018年度上学期",
      8: "2018年度下学期",
      9: "2019年度上学期",
      10: "2019年度下学期",
      11: "2020年度上学期",
      12: "2020年度下学期",
      13: "2021年度上学期",
      14: "2021年度下学期",
      15: "2022年度上学期",
      16: "2022年度下学期",
      17: "2023年度上学期",
      18: "2023年度下学期",
      19: "2024年度上学期",
      20: "2024年度下学期",
      21: "2025年度上学期",
      22: "2025年度下学期",
      23: "2026年度上学期",
      24: "2026年度下学期",
      25: "2027年度上学期",
      26: "2027年度下学期",
      27: "2028年度上学期",
      28: "2028年度下学期",
      29: "2029年度上学期",
      30: "2029年度下学期",
      31: "2030年度上学期",
      32: "2030年度下学期",
      33: "2005年度上学期",
      34: "2005年度下学期",
      35: "2006年度上学期",
      36: "2006年度下学期",
      37: "2007年度上学期",
      38: "2007年度下学期",
      39: "2008年度上学期",
      40: "2008年度下学期",
      41: "2009年度上学期",
      42: "2009年度下学期",
      43: "2010年度上学期",
      44: "2010年度下学期",
      45: "2011年度上学期",
      46: "2011年度下学期",
      47: "2012年度上学期",
      48: "2012年度下学期",
      49: "2013年度上学期",
      50: "2013年度下学期",
      51: "2014年度上学期",
      52: "2014年度下学期",
    },
    roll_type: {
      1: "本校就读",
      2: "他校就读",
      3: "其他",
    },
    planForm: {},
    planDate: [],
    dict_usage: {
      1: '科学选材',
      2: '大纲考核',
      3: '机能监控',
      4: '疾病筛查',
    },
    dict_important: {
      1: '重点',
      2: '非重点',
    },
    dict_cultureResultType: {
      1: '平时',
      2: '期中',
      3: '期末',
    },

  }
}

const state = getDefaultState();
const cellRender = () => {
  let dict = getDefaultState()
  VXETable.renderer.add('dict_school_term', {
    renderDefault(h, renderOpts, params) {
      let {
        row,
        column
      } = params

      return [
        dict["dict_school_term"][row[column.property]]
      ]
    },

  })





  VXETable.renderer.add('dict_cultureResultType', {
    renderDefault(h, renderOpts, params) {
      let {
        row,
        column
      } = params

      return [
        dict["dict_cultureResultType"][row[column.property]]
      ]
    }
  })




  VXETable.renderer.add('dict_cultureResultType_filter', {
    renderFilter(h, filterRender, params) {
      let {
        column,
        $panel
      } = params
      return column.filters.map(option => {
        return <input type = "text"
        v-model = {
          option.data
        }
        onInput = {
          evnt => {
            $panel.changeOption(evnt, !!option.data, option)
          }
        }
        />
      })
    },
    // 重置数据方法
    filterResetMethod({
      options
    }) {
      // options.forEach((option) => {
      //   option.data = 'd'
      // })
      console.log('filterResetMethod')
    },
    // // 重置筛选复原方法（当未点击确认时，该选项将被恢复为默认值）
    filterRecoverMethod({
      option
    }) {
      // option.data = 'd'
      console.log('filterRecoverMethod')
    },

    filterMethod({
      option,
      row,
      column
    }) {
      let cellValue = XEUtils.get(row, column.property)
      cellValue =  dict["dict_cultureResultType"][cellValue]
      return cellValue == option.data
    }
  })
}
cellRender();

const mutations = {
  RESET_STATE: (state) => {
    Object.assign(state, getDefaultState())
  },
  SET_TOKEN: (state, token) => {
    state.token = token
  },
  SET_NAME: (state, name) => {
    state.name = name
  },
  SET_ORG: (state, org) => {
    state.org = org
  },
  SET_AVATAR: (state, avatar) => {
    state.avatar = avatar
  },
  SET_PLANFORM: (state, planForm) => {
    state.planForm = planForm
  },
  SET_PLANDATE: (state, planDate) => {
    state.planDate = planDate
  },
  SET_MENU: (state, menu) => {
    state.menu = menu
  },
}

const actions = {
  // 获取菜单
  getMenu({
    commit
  }, data) {
    return new Promise((resolve, reject) => {
      getMenu({
        userId: data.userId,
        roleId: data.roleId
      }).then(res => {
        if(res.data){
          window.localStorage.setItem('menu', JSON.stringify(res.data))
          commit('SET_MENU', res.data)
        }else{
          window.localStorage.setItem('menu', JSON.stringify({}))
        }
        resolve()
      })
    })
  },
  // user login
  login({
    commit
  }, data) {
    return new Promise((resolve, reject) => {
      login(data).then(res => {
        if(res.code == 302) {
          reject(res.data)
        }else if (res.code == 200) {
          window.sessionStorage.setItem('provinceCheck', res.data.provinceCheck)
          commit('SET_TOKEN', res.data.token)
          if (res.data.provinceCheck) {
            setToken(res.data.token)
          }
          resolve()
        }else {
          reject(res.message)
        }
      })
    })
  },

  // get user info
  getInfo({
    commit,
    state
  }) {
    let userInfo = window.localStorage.getItem('userInfo').split('&nbsp;&nbsp;')
    let name = userInfo[1]
    let org = userInfo[0]
    commit('SET_NAME', name)
    commit('SET_ORG', org)


    // return new Promise((resolve, reject) => {
    //   getInfo(state.token).then(response => {
    //     const { data } = response

    //     if (!data) {
    //       return reject('验证失败，请重新登录。')
    //     }

    //     const { name, avatar } = data

    //     commit('SET_NAME', name)
    //     commit('SET_AVATAR', avatar)
    //     resolve(data)
    //   }).catch(error => {
    //     reject(error)
    //   })
    // })
  },

  // user logout
  logout({
    commit,
    state
  }) {
    return new Promise((resolve, reject) => {
      // logout(state.token).then(() => {
        window.sessionStorage.removeItem('roleId')
        window.sessionStorage.removeItem('sessionDocDataIds')
        window.sessionStorage.removeItem('playerList')
        window.sessionStorage.removeItem('playerPdfNum')
        window.sessionStorage.removeItem('pdfNum')
        removeToken() // must remove  token  first
        resetRouter()
        commit('RESET_STATE')
        resolve()
      // }).catch(error => {
      //   reject(error)
      // })
    })
  },

  // remove token
  resetToken({
    commit
  }) {
    return new Promise(resolve => {
      removeToken() // must remove  token  first
      commit('RESET_STATE')
      resolve()
    })
  }
}

export default {
  namespaced: true,
  state,
  mutations,
  actions
}
